/**
 * 
 * @export
 * @param {any} com
 * @returns 'A virtual dom'
 * @author 'yejinbo'
 * @description `这是一个允许进行内嵌的组件, 你可以生成这个组件，然后在这个组件上面绑定一些attr/props，
 *                子组件将可以获取到这些值，类似el-select，这么做仅仅是可以让你的标签看起来更语义化，
 *                你应该完全不会用到这个`
 */
export default function asyncMult (com) {
  return {
    mounted () {
      console.log('async action')
    },
    props: com.props,
    render (h) {
      const slots = Object.keys(this.$slots)
        .reduce((arr, key) => arr.concat(this.$slots[key]), [])
        .map(vnode => {
          vnode.context = this._self
          return vnode
        })
      return h(com, {
        on: this.$listener,
        props: this.$props,
        attrs: this.$attrs,
        scopedSlots: this.$scopedSlots
      }, slots)
    }
  }
}
